set(REQUESTSERVER_SOURCE_DIR ${SERENITY_SOURCE_DIR}/Userland/Services/RequestServer)

set(REQUESTSERVER_SOURCES
    ${REQUESTSERVER_SOURCE_DIR}/ConnectionFromClient.cpp
    ${REQUESTSERVER_SOURCE_DIR}/ConnectionCache.cpp
    ${REQUESTSERVER_SOURCE_DIR}/Request.cpp
    ${REQUESTSERVER_SOURCE_DIR}/GeminiRequest.cpp
    ${REQUESTSERVER_SOURCE_DIR}/GeminiProtocol.cpp
    ${REQUESTSERVER_SOURCE_DIR}/HttpRequest.cpp
    ${REQUESTSERVER_SOURCE_DIR}/HttpProtocol.cpp
    ${REQUESTSERVER_SOURCE_DIR}/HttpsRequest.cpp
    ${REQUESTSERVER_SOURCE_DIR}/HttpsProtocol.cpp
    ${REQUESTSERVER_SOURCE_DIR}/Protocol.cpp
)

add_library(requestserver STATIC ${REQUESTSERVER_SOURCES})

add_executable(RequestServer main.cpp)
target_link_libraries(RequestServer PRIVATE requestserver)

target_include_directories(requestserver PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Services/)
target_include_directories(requestserver PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/..)
target_link_libraries(requestserver PUBLIC LibCore LibMain LibCrypto LibFileSystem LibGemini LibHTTP LibIPC LibMain LibTLS LibWebView LibWebSocket LibURL LibThreading)
if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
    # Solaris has socket and networking related functions in two extra libraries
    target_link_libraries(requestserver PUBLIC nsl socket)
endif()
if (HAIKU)
    # Haiku has networking related functions in the network library
    target_link_libraries(RequestServer PRIVATE network)
endif()
